package file.it.byte_stream;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;

/**
 * 目标：使用文件字节输入流一次读取完文件的全部字节
 */
public class FileInputStreamTest3 {
    public static void main(String[] args) throws Exception {
        // 1.一次性读取完文件的全部字节到一个字节数组中
        // 创建一个字节输入流管道与源文件接通
        InputStream is = new FileInputStream(("src/abc03.txt"));

        // 2.准备一个字节数组，大小与文件的大小正好一样大
//        File f = new File("src/abc03.txt");
//        long size = f.length();
//        byte[] buffer = new byte[(int) size]; // 把 size 强转成int型  (int) size
//
//        int len = is.read(buffer);
//        System.out.println(new String(buffer));
//
//        System.out.println(size);
//        System.out.println(len);

//        byte[] buffer = is.readAllBytes(); // 要java版本高于8才能使用readAllBytes()方法
//        readAllBytes是java7以上java自带的一个静态方法，import java.nio.file.Files后通过Files.readAllBytes(path)即可调用。
        byte[] buffer = Files.readAllBytes(Paths.get("D:\\code\\LX\\java-demo1\\src\\abc03.txt"));
        System.out.println(new String(buffer));

        // 字节流适合做数据转移，如文件复制等
    }
}
